const express = require('express');
let app = express();

// 定义应用中间件
app.use((req,res,next)=>{
    console.log(111)
    // 方式一：直接抛出一个错误
    // throw new Error('第一个错误了');
    // 方式二：直接在next里输入错误内容，也会转交到错误处理中间件
    next();
})

// 定义应用中间件
app.use((req,res,next)=>{
    console.log(222)
    // throw new Error('第二个错误');
    // next('第二个错误了');
    next();
})

// 定义错误处理中间件
// 任意一个中间件内部如果出现了错误 就会自动把错误传递给处理中间件处理；
app.use((err,req,res,next)=>{
    console.log('错误处理中间件执行了');
    if(err){
        return console.log('错误了:',err);
    }
    // next();
})

app.get('/index',(req,res)=>{
    res.send('hello 你好');
})

// 404的处理中间件
// 先匹配上面的路由，如果没有任意一个路由能够匹配到 ，那么就会进入下面的中间件
app.use((req,res)=>{
    res.send('<h1>404 not found!!</h1>')
})

app.listen(8989);